/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fisica;

import hibernate.Sesion;
import hibernate.objeto.Vacuna;
import java.util.Vector;
import org.hibernate.Query;
import presentacion.utilidad.Paginador;

/**
 *
 * @author Gonzalo
 */
public class VacunaFisica extends CapaFisica{

    /**
     * Retorna el objeto Vacuna según el id.
     *
     * @param estado false si es baja lógica, true si aún activo
     * @param id El id de la vacuna
     * @return El objeto Vacuna consultado, null si no existe
     */
    public static Vacuna getVacunaPorIdEnBd(int id, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from Vacuna " +
                "where idVacuna = " + id + "and " +
                "enBdVacuna = " + estado
                );

        return (Vacuna) getObjeto(q);
    }

    /**
     * Retorna el vector con los objetos Vacuna según el estado en la base
     * de datos.
     *
     * @param estado false si es baja lógica, true si aún activo
     * @return El vector de objetos Vacuna consultado
     */
    public static Vector<Vacuna> getVectorVacunaPorEnBd(boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from Vacuna " +
                "where enBdVacuna = " + estado
                + " order by nombreVacuna asc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el objeto Vacuna según el id del paciente al que se le aplicaron.
     *
     * @param idPaciente El id del paciente
     * @param estado false si es baja lógica, true si aún activo
     * @return El vector de Vacunas consultado
     */
    public static Vector<Vacuna> getVectorVacunaPorIdPacientePorEnBd(
            int idPaciente, boolean estado) {
         Query q = Sesion.sesion.createQuery(
                "select distinct a.periodoAplicacionVacuna.vacuna " +
                "from AplicacionVacuna a " +
                "where a.paciente.idPaciente = " + idPaciente + " and " +
                "a.enBdAplicacionVacuna = " + estado
                + " order by a.periodoAplicacionVacuna.vacuna.nombreVacuna asc");

            Paginador.paginar(q);
         
            return getVectorObjetos(q);
        
    }

    /**
     * Retorna el objeto Vacuna según el nombre de la vacuna.
     *
     * @param nombreVacuna El nombre de la vacuna
     * @param estado false si es baja lógica, true si aún activo
     * @return El objeto Vacuna consultado, null si no existe
     */
    public static Vacuna getVacunaPorNombreYEnBd(String nombreVacuna,
            boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from Vacuna " +
                "where nombreVacuna = '" + nombreVacuna + "' " +
                "and enBdVacuna = " + estado
                );
        
        return (Vacuna) getObjeto(q);
    }
}
